package main

import "fmt"

// SayAble 是一个泛型接口，Person3 实现了该接口。
type SayAble[T int | string] interface {
	Say() T
}

type Person3[T int | string] struct {
	msg T
}

func (p Person3[T]) Say() T {
	return p.msg
}

func main() {
	var s SayAble[string]              // 指明接口类型
	s = Person3[string]{"hello world"} // 实现接口时，数据类型必须与接口一致
	fmt.Println(s.Say())
}
